package com.hzhq.contract.service;


import com.hzhq.contract.bean.dto.UserDTO;
import com.hzhq.contract.bean.entity.User;
import com.hzhq.contract.bean.vo.UserVO;
import com.hzhq.contract.result.Result;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;


/**
 * @author hzhq
 * @create 2021/3/23 5:51 下午
 * @email hzhq1255@163.com
 */
public interface UserService {

    /**
     * 登录操作
     * @param username 登录用户
     * @param password 密码
     * @param type 角色
     * @return Result
     */
    Result<Object> loginCheck(String username, String password,Integer type);

    /**
     * 注册操作
     * @param user 注册用户
     * @return result
     */
    Result<Object> registerUser(UserDTO user);



    /**
     * 以分页形式获取所有用户信息
     * @param pageable 构造page
     * @return result
     */
    Page<UserDTO> getAll(Pageable pageable);

    /**
     * 查询
     * @param username 用户名
     * @param pageable 分页对象
     * @return Result
     */
    Result<Object> searchByUsername(String username, Pageable pageable);


    /**
     * 用户申请权限
     * @param username 用户
     * @param roleName 角色
     * @param departName 部门
     * @param adminName 管理员
     * @param type 1 部门管理员 0 系统管理员
     * @param passed
     * @return Result
     */
    Result<Object> applicantRole(String username, String roleName,String departName, String adminName, Integer type , Integer passed);


    Result<Object> getAllUserList();

    UserDTO getOneByName(String username);


    Page<UserDTO> searchAllPages(UserDTO userDTO, Integer currentPage, Integer pageSize);

    Page<UserDTO> searchAllPages(Query query, Integer currentPage, Integer pageSize);

    String save(UserDTO userDTO);

}
